<?php

class Empresa extends BaseEmpresa
{
  // JHM - 09/01/09
  public function __toString()
  {
    return $this->getNombre();
  }

  public function save(PropelPDO $con = null)
  {
      if (is_null($con))
      {
          $con = Propel::getConnection(EmpresaPeer::DATABASE_NAME, Propel::CONNECTION_WRITE);
      }
    
	  $con->beginTransaction();
	  try
	  {
	    $ret = parent::save($con);

        // Actualizamos el indice
	    $this->updateLuceneIndex();

	    $con->commit();

	    return $ret;
	  }
	  catch (Exception $e)
	  {
	    $con->rollBack();
	    throw $e;
	  }

    return $ret;
  }

  // Metodo que actualiza el indice
  public function updateLuceneIndex()
	{
	  $index = EmpresaPeer::getLuceneIndex();

	  // remove an existing entry
	  if ($hit = $index->find('pk:'.$this->getId()))
	  {
	    $index->delete($hit->id);
	  }

      /*
	  // don't index expired and non-activated jobs
	  if ($this->isExpired() || !$this->getIsActivated())
	  {
	    return;
	  }
      */
	  $doc = new Zend_Search_Lucene_Document();

	  // Guardamos la clave primeria para utilizarla posteriormente en las busquedas
      // store job primary key URL to identify it in the search results
	  $doc->addField(Zend_Search_Lucene_Field::UnIndexed('pk', $this->getId()));

	  // Indexamos el contenido de las columnas de datos principales (nombre, ciudad)
      // index job fields
	  $doc->addField(Zend_Search_Lucene_Field::UnStored('nombre', $this->getNombre(), 'utf-8'));
	  $doc->addField(Zend_Search_Lucene_Field::UnStored('ciudad', $this->getCiudad(), 'utf-8'));
	  

	  // Añade la empresa al indice
	  $index->addDocument($doc);
	  $index->commit();
	}


    public function delete(PropelPDO $con = null)
	{
      // Eliminar el registro de la empresa del indice  cuando se borra una empresa
	  $index = EmpresaPeer::getLuceneIndex();

	  if ($hit = $index->find('pk:'.$this->getId()))
	  {
	    $index->delete($hit->id);
	  }

	  return parent::delete($con);
	}

    
}


